package com.ruoyi.labdata.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.ruoyi.labdata.domain.LabChemicalUse;
import com.ruoyi.labdata.mapper.LabChemicalUseMapper;
import com.ruoyi.labdata.service.ILabChemicalUseService;
import com.ruoyi.system.domain.LabProductCas;
import com.ruoyi.system.service.ILabProductCasService;

/**
 * 化学品使用Service业务层处理
 * 
 * @author winner pan
 * @date 2022-03-18
 */
@Service
public class LabChemicalUseServiceImpl implements ILabChemicalUseService {
	@Autowired
	private LabChemicalUseMapper labChemicalUseMapper;
	@Autowired
	private ILabProductCasService labProductCasService;

	/**
	 * 查询化学品使用
	 * 
	 * @param id
	 *            化学品使用ID
	 * @return 化学品使用
	 */
	@Override
	public LabChemicalUse selectLabChemicalUseById(Long id) {
		return labChemicalUseMapper.selectLabChemicalUseById(id);
	}

	/**
	 * 查询化学品使用列表
	 * 
	 * @param labChemicalUse
	 *            化学品使用
	 * @return 化学品使用
	 */
	@Override
	public List<LabChemicalUse> selectLabChemicalUseList(LabChemicalUse labChemicalUse) {
		return labChemicalUseMapper.selectLabChemicalUseList(labChemicalUse);
	}

	/**
	 * 新增化学品使用
	 * 
	 * @param labChemicalUse
	 *            化学品使用
	 * @return 结果
	 */
	@Override
	@Transactional
	public int insertLabChemicalUse(LabChemicalUse labChemicalUse) {
		LabProductCas details = new LabProductCas();
		details.setProductId(labChemicalUse.getDetailId());
		details.setScanoutNum(labChemicalUse.getUseNum());
		int ret = labProductCasService.scanoutIventory(details);
		if(ret==0){
			throw new RuntimeException("库存不足或库存已经被更新，请查询校对！");
		}
		return labChemicalUseMapper.insertLabChemicalUse(labChemicalUse);
	}

	/**
	 * 修改化学品使用
	 * 
	 * @param labChemicalUse
	 *            化学品使用
	 * @return 结果
	 */
	/*@Override
	public int updateLabChemicalUse(LabChemicalUse labChemicalUse) {
		return labChemicalUseMapper.updateLabChemicalUse(labChemicalUse);
	}*/

	/**
	 * 批量删除化学品使用
	 * 
	 * @param ids
	 *            需要删除的化学品使用ID
	 * @return 结果
	 */
	/*@Override
	public int deleteLabChemicalUseByIds(Long[] ids) {
		return labChemicalUseMapper.deleteLabChemicalUseByIds(ids);
	}*/

	/**
	 * 删除化学品使用信息
	 * 
	 * @param id
	 *            化学品使用ID
	 * @return 结果
	 */
	@Override
	@Transactional
	public int deleteLabChemicalUseById(Long id) {
		LabChemicalUse labChemicalUse = this.selectLabChemicalUseById(id);
		if(labChemicalUse==null){
			throw new RuntimeException("未能查到该使用记录，记录ID:"+id);
		}
		LabProductCas details = new LabProductCas();
		details.setProductId(labChemicalUse.getDetailId());
		if(labChemicalUse.getUseNum()==null){
			throw new RuntimeException("化学品使用记录的数量为空，错误! 记录ID="+id);
		}
		details.setScaninNum(labChemicalUse.getUseNum());
		int ret = labChemicalUseMapper.deleteLabChemicalUseById(id);
		if(ret==1){
			labProductCasService.scaninIventory(details);
		}
		return 1;
	}

	@Override
	public List<LabChemicalUse> getLabChemicalUseList(LabChemicalUse labChemicalUse) {
		return labChemicalUseMapper.getLabChemicalUseList(labChemicalUse);
	}
}
